package com.ruoyi.system.domain;

import com.ruoyi.system.entity.AbdulBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;

/**
 * 提前结束消费退款规则，定义用户提前结束消费时的退款逻辑、渠道及计费规则对象 early_end_refund_rules
 *
 * @author ruoyi
 * @date 2025-05-13
 */
@Data
@ApiModel("提前结束消费退款规则，定义用户提前结束消费时的退款逻辑、渠道及计费规则")
public class EarlyEndRefundRules extends AbdulBaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 提前结束消费退款规则表唯一标识ID，主键自增
     */
    @ApiModelProperty("提前结束消费退款规则表唯一标识ID，主键自增")
    private Long id;

    /**
     * 用户自助预订开关（0=关闭，1=开启）：控制用户是否可自助发起预订流程
     */
    @Excel(name = "用户自助预订开关", readConverterExp = "0==关闭，1=开启")
    @ApiModelProperty("用户自助预订开关（0=关闭，1=开启）：控制用户是否可自助发起预订流程")
    private Integer userSelfBookingEnabled;

    /**
     * 启用提前结束退款（0=关闭，1=开启）：控制是否允许用户提前结束消费并退款
     */
    @Excel(name = "启用提前结束退款", readConverterExp = "0==关闭，1=开启")
    @ApiModelProperty("启用提前结束退款（0=关闭，1=开启）：控制是否允许用户提前结束消费并退款")
    private Integer enableEarlyEndRefund;

    /**
     * 开始消费后全额退款分钟数阈值（如30表示消费开始后30分钟内可全额退款）
     */
    @Excel(name = "开始消费后全额退款分钟数阈值", readConverterExp = "如=30表示消费开始后30分钟内可全额退款")
    @ApiModelProperty("开始消费后全额退款分钟数阈值（如30表示消费开始后30分钟内可全额退款）")
    private Integer fullRefundMinutesThreshold;

    /**
     * 最低消费分钟数（如60表示用户需至少消费60分钟，不足按60分钟计费）
     */
    @Excel(name = "最低消费分钟数", readConverterExp = "如=60表示用户需至少消费60分钟，不足按60分钟计费")
    @ApiModelProperty("最低消费分钟数（如60表示用户需至少消费60分钟，不足按60分钟计费）")
    private Integer minConsumptionMinutes;

    /**
     * 退款剩余分钟数阈值（如用户剩余消费时长≥此值时触发退款逻辑）
     */
    @Excel(name = "退款剩余分钟数阈值", readConverterExp = "如=用户剩余消费时长≥此值时触发退款逻辑")
    @ApiModelProperty("退款剩余分钟数阈值（如用户剩余消费时长≥此值时触发退款逻辑）")
    private Integer refundRemainingMinutesThreshold;

    /**
     * 实际消费分钟计费区间
     */
    @Excel(name = "实际消费分钟计费区间")
    @ApiModelProperty("实际消费分钟计费区间")
    private String consumptionIntervalRules;

    /**
     * 退回时长卡（0=关闭，1=开启）：开启时，退款金额转换为时长卡时长
     */
    @Excel(name = "退回时长卡", readConverterExp = "0==关闭，1=开启")
    @ApiModelProperty("退回时长卡（0=关闭，1=开启）：开启时，退款金额转换为时长卡时长")
    private Integer refundToTimeCard;

    /**
     * 退回会员余额（0=关闭，1=开启）：开启时，退款金额存入用户会员余额
     */
    @Excel(name = "退回会员余额", readConverterExp = "0==关闭，1=开启")
    @ApiModelProperty("退回会员余额（0=关闭，1=开启）：开启时，退款金额存入用户会员余额")
    private Integer refundToMemberBalance;

    /**
     * 退回在线支付（0=关闭，1=开启）：开启时，退款金额原路退回支付渠道
     */
    @Excel(name = "退回在线支付", readConverterExp = "0==关闭，1=开启")
    @ApiModelProperty("退回在线支付（0=关闭，1=开启）：开启时，退款金额原路退回支付渠道")
    private Integer refundToOnlinePayment;

    /**
     * 规则适用范围：all（全局规则，适用于所有用户和门店），store（门店级规则，需关联门店ID），user_level（用户等级规则，需关联用户等级ID）
     */
    @Excel(name = "规则适用范围：all", readConverterExp = "全=局规则，适用于所有用户和门店")
    @ApiModelProperty("规则适用范围：all（全局规则，适用于所有用户和门店），store（门店级规则，需关联门店ID），user_level（用户等级规则，需关联用户等级ID）")
    private String ruleScope;

    /**
     * 手机号
     */
    @Excel(name = "手机号")
    @ApiModelProperty("手机号")
    private String phone;
}
